package org.dyndns.opendemogroup.optimizer;

import java.util.Random;

/**
 * Defines one or more actions applied to a Member.
 */
public interface IOperation
{
	/**
	 * Performs the operation by using elements from parentOne and parentTwo to
	 * populate the childOne and childTwo genomes.
	 * 
	 * @param randomSource
	 *        A source of random numbers.
	 * @param problem
	 *        The optimization problem currently being worked on.
	 * @param parentOne
	 *        The first Member parent.
	 * @param parentTwo
	 *        The second Member parent.
	 * @param childOne
	 *        The first Member child.
	 * @param childTwo
	 *        The second Member child.
	 */
	void perform ( Random randomSource, IOptimizationProblem problem,
			Member parentOne, Member parentTwo, Member childOne, Member childTwo );
}
